【Security Hub修復手順】 [IAM.7] IAM ユーザーのパスワードポリシーには強力な設定が必要です
こんにちは。AWS事業本部コンサルティング部に所属している今泉(@bun76235104)です。
皆さん、お使いのAWS環境のセキュリティチェックはしていますか?
当エントリでは、AWS Security HubによるAWS環境のセキュリティ状況スコアリングに該当する項目についての修正手順をご紹介します。
本記事の対象コントロール
[IAM.7] IAM ユーザーのパスワードポリシーには強力な設定が必要です
[IAM.7] Password policies for IAM users should have strong configurations
前提条件
本記事はAWS Security Hubで「AWS基礎セキュリティのベストプラクティススタンダード」を利用されている方向けの内容となります。 AWS Security Hubの詳細についてはこちらのブログをご覧ください。
修正手順
1 パスワードポリシー変更による影響を整理
パスワードポリシーとは
パスワードポリシーはIAMユーザーがAWS Management Consoleにサインインする際に利用するパスワードの設定に関するルールです。
よく見かける「パスワードは○文字以上」や「少なくとも1文字の数字が含まれる必要があります」などのルールと考えて良いと思います。
最低限満たす必要があるパスワードポリシー
今回のコントロールを修復するには、パスワードポリシーが以下の要件を満たすように変更する必要があります。
- パスワードの最小文字数: 8文字以上
- 少なくとも 1 つのアルファベットの大文字 (A~Z) が必要です
- 少なくとも 1 つのアルファベットの小文字 (a~z) が必要です
- 少なくとも 1 つの数字が必要です
- 少なくとも 1 つの英数字以外の文字が必要です ( ! @ # $ % ^ & * ( ) _ + - = [ ] {} | ' )
これらを踏まえて対象のAWSアカウントへの影響を確認します。
IAMユーザーへの影響
パスワードポリシーを変更した後、新しいパスワードポリシーの基準を満たしていないIAMユーザーは次回のサインイン時にどうなるのでしょうか?
AWSのパスワードポリシーの設定に関するルールによると以下のように記述があります。
パスワードポリシーを作成または変更する場合、パスワードポリシーの設定の多くは、ユーザーが次回パスワードを変更するときに適用されます。ただし、一部の設定はすぐに適用されます。
具体的な例をみてみます。
最小文字数と文字タイプの要件が変更されると、これらの設定はユーザーが次回パスワードを変更するときに適用されます。既存のパスワードが更新されたパスワードポリシーに従っていない場合でも、ユーザーは既存のパスワードの変更を強制されません。
最小の文字数や文字タイプの要件が変更され、既存のIAMユーザーの設定パスワードがその基準を満たしていない場合でも、次回サインイン時にパスワード変更を強制されないということですね。
一方で、パスワードの有効期限については以下のように記述されています。
パスワードの有効期限を設定した場合、有効期限は直ちに適用されます。たとえば、パスワードの有効期限を 90 日に設定したとします。この場合、既存のパスワードが作成されてから 90 日を超える期間が経過しているすべての IAM ユーザーのパスワードが失効します。これらのユーザーは、次回サインインするときにパスワードを変更する必要があります。
今回のコントロールの要件には有効期限に関する基準はありませんが、併せてパスワード有効期限を設定する場合はIAMユーザーの次回サインイン時にパスワード変更が必要になる可能性がありますね。
影響範囲外のリソース
こちらもAWSのパスワードポリシーの設定に関するルールを参照すると、ルートユーザーやアクセスキーを利用したアクセスには影響がないようです。
IAM パスワードポリシーは、AWS アカウント ルートユーザーパスワードまたは IAM ユーザーアクセスキーには適用されません。
2 ステークホルダーに確認
次にステークホルダー(関係者)を整理しましょう。
今回のコントロールではIAMユーザーのパスワード長・パスワードの複雑さなどの設定が関わっているため、以下のような部門が考えられます。
- IAMユーザーを作成・管理している部門
- 情報セキュリティの統括部門
- 実際にIAMユーザーを利用している部門
ステークホルダーを整理したら社内の規約(情報セキュリティポリシーなど)を踏まえつつ、必要なパスワードポリシーを整理します。
上記のパスワードポリシー変更にかかる影響を踏まえつつ、既存IAMユーザーを利用している方たちへの周知やパスワード変更の依頼をしておくとスムーズに進めるかと思います。
余談ですが、AWSデフォルトのパスワードポリシーより社内規約で定めるパスワードの設定が弱い場合、規約を見直すきっかけになるかもしれません。
※ パスワードポリシーの確認に策定に時間を要するのであれば、いったん以下の手順でパスワードポリシーを変更することも検討しましょう。
3 パスワードポリシーを変更する
AWSマネジメントコンソールからIdentity and Access Management (IAM)
のダッシュボードに遷移したら、「アカウント設定」をクリックします。
次に「パスワードポリシー」のブロックの「編集」をクリックします。
「カスタム」のラジオボタンをクリックし、パスワードの最小文字数・パスワードの強度などについて設定します。
再掲となりますが、以下の条件はすべて満たすように設定してください。
- パスワードの最小文字数: 8文字以上
- 少なくとも 1 つのアルファベットの大文字 (A~Z) が必要です
- 少なくとも 1 つのアルファベットの小文字 (a~z) が必要です
- 少なくとも 1 つの数字が必要です
- 少なくとも 1 つの英数字以外の文字が必要です ( ! @ # $ % ^ & * ( ) _ + - = [ ] {} | ' )
確認して問題なければ「変更を保存」をクリックします。
確認のダイアログが表示されるため、確認後「カスタムを設定」を押下します。
これでパスワードポリシーの変更が完了しました。
おまけ: パスワードポリシー変更後、IAMユーザーにパスワード変更を強制する
上で確認したように、パスワードの最小文字数や強度を変更した後、既存のIAMユーザーがパスワードの基準を満たしていない場合でも問題なくサインインできます。
最小文字数と文字タイプの要件が変更されると、これらの設定はユーザーが次回パスワードを変更するときに適用されます。既存のパスワードが更新されたパスワードポリシーに従っていない場合でも、ユーザーは既存のパスワードの変更を強制されません。
既存のIAMユーザーのサインイントラブル回避には良いのですが、パスワードの有効期限を設定していない場合、既存のパスワードから変更することなく弱いパスワードを継続して利用してしまう可能性があります。
そのような場合、以下の手順でIAMユーザーに次回サインイン時にパスワードの変更を強制可能です。
AWSマネジメントコンソールからIdentity and Access Management (IAM)
のダッシュボードに遷移し、「ユーザー」をクリックするとIAMユーザーの一覧が表示されるため、設定したいIAMユーザーのユーザー名をクリックします。
次に「セキュリティ認証情報」のタブを選択し、「コンソールアクセスを管理」をクリックします。
「パスワードを設定」では「既存のパスワードを保持」を選択したまま、「ユーザーは次回のサインイン時に新しいパスワードを作成する必要があります」のチェックボックスを有効にして「適用」を押下します。
これにより、このIAMユーザーがサインインする際にはパスワードを変更する必要があり、新しいパスワードポリシーの基準をクリアしたパスワードを設定してもらうことが可能です。
ただし、IAMユーザーの数が多い場合手動で設定していくのもつらいですよね。
AWS CLIを使った方法なども考えられるので、別途記事で検証してみたいと思います。
最後に
今回は、AWS Security HubによるAWS環境のセキュリティ状況スコアリングに該当する項目についての修正手順をご紹介しました。
コントロールを修正して、お使いのAWS環境のセキュリティをパワーアップさせましょう!
最後までお読みいただきありがとうございました!どなたかのお役に立てれば幸いです。
以上、今泉でした!